As an image viewer, bit allows list of images to be viewed in their original type (24bits or color index) in any order and in any of the many built-in styles of display. With command line option -IN, bit simulates and combines the functionalities of ipaste(1G), gifpaste(1L) and jpegpaste(1L). Further, with the pan and zoom features, large images can be viewed in full without being limited by the window or screen size. Slideshow is also supported.
As an image editor, bit performs a large number of image editing and processing tasks accurately and efficiently. It keeps information loss at any stage of the editing process at an absolute minimum by performing subpixel sampling automatically while conserving the input image type whenever possible to avoid unnecessary promotion and/or quantization of input images. The paint function features brushes, free hand drawing, fill and many built-in patterns, all with 24bits color. In addition, arbitrarily colored and sized text and simple geometric figures can be rendered on top of an image for annotation with the option to make them part of the bitmap or output separately to take advantage of the higher printer resolutions.
Bit can also be used as a graphical user interface to an existing image processing program by defining an external binding to it which in essence turns a command line oriented program into a bit subfunctions and can be accessed by a press of a button, and best of all, the processed image will be read back and displayed immediately. Convolution using externally defined matrices of arbitrary order can be performed dynamically giving great flexibility in processing an image.
Upon startup, bit does the following and then waits for further command:
At this point, if the FileList is not empty, the first file on the list will be loaded and displayed in the main window.
To display next file on the list, click leftmouse in the main window or press the SPACE key;
To display the previous file, click rightmouse in the main window or press the p key;
And to display the current image (again), click middlemouse in the main window or press the c key.
Besides adding files to the FileList via command line arguments, files can also be added or removed from the FileList by the FilePanel button labeled load, See Command Summaries for details.
To pause an indefinite interval at any point, press PAUSE key. To re-activate, press PAUSE again.
To exit bit, click the Quit button on FilePanel or press <ESC> key anywhere.
Bit performs all of its image manipulations interactively with a continuous progress report, and once the processing is complete, the processed image will be displayed. In most cases, transformation is reversible and a simple undo will recover the un-processed image.
Current features include
Or you can input the character code directly if the font encoding scheme is known, e.g., for PostScript Symbol font, $\343$ produces the copyright symbol (c)
The following command line options are interpreted by bit program and override any program defaults, including options set in the start up file.
Online help is presented in a form of a browser. You can scroll through the page by the mouse. In help mode, all control panels are deactivated and no interaction can take place until you exit from help mode by pressing the button on the title of the browser.
To choose the desired format to write, click the mouse on the button that has the format name on it. Upon each new selection, several things will take place: First, the filename is modified to reflect the current selection by adding or modifying the extension, and if it already exists, a highlight is added to the name in the browser to warn about possible overwriting; Next, current settings for writing, if any, are shown in the box labeled options. If there is none, the option box shows the word "NONE". To change default settings, press the mouse on the option box. Note the options mentioned here are those that are specific to an image format, such as the Q-value in jpeg or interlace in gif etc. Image type conversion is transparent and taken care of automatically, e.g., requesting a jpeg with a gray image (either in colormap or rgb representation) will produce a single channel jpeg file with 8bit/sample.
Click the OK button to initiate output. If successful, the write control panel disappears.
* IRIS RGB, native to SGI IRIS * JPEG(JFIF) format * MPEG Movie (ReadOnly) * CompuServ GIF * PNM(Portable Any Map), including PPM, PGM and PBM. * XBM (X Window Bitmap) * TIFF * PostScript * Sun Rasterfile
In addition, compressed version of aforementioned formats will be automatically decompressed and loaded.
DisplayStyle: 14 and DisplayStyle: Sparkle
are valid and select the display style sparkle.
In the following listing, the numerical value is given in parenthesis. The best way to set up a configuration is to change the settings interactively and then write out the current settings to a file and name that file to be the default start-up file.
Options | Effects |
Block[0] | display in one scoop |
Down[1] | from top to bottom |
Up[2] | from bottom to top |
Left[3] | from left to right |
Right[4] | from right to left |
DownUp[5] | from top and bottom toward center |
UpDown[6] | from center to top and bottom |
LR[7] | from left and right toward center |
RL[8] | from center to right and left |
RInt[9] | RowUniform interlace |
CInt[10] | Column uniform interlace |
Gint[11] | Interlace, GIF style |
Rect1[12] | rectangular, towards center |
Rect2[13] | rectangular, from center |
Sparkle[14] | sparkle fade |
Fade[15] | blending fade |
Cycle[100] | cycle through all styles |
Note Fade is applicable to RGB images and is ignored if the image is in CI.
10 10 800 600 # main window size 800X600 with ll corner at (10,10) 820 10 # info window location 820 180 # edit panel location
You can interactively shape and move the windows and then write out the position via SetUp button on InfoPanel.
Dragging the mouse means moving the mouse while one of the mouse button is pressed.
A rubber band as used in bit refers to a simple geometric figure, typically a rectangle, whose size, location and possibly shape can be changed by mouse clicking or dragging.
A control panel (also known as dialog box) is a window with many built-in objects whose functions are to modify the attributes of an object, such as text color, or to modify task parameters, such as the scaling factor. Some of the control panels have no borders by default, to force a border, turn on the AlwaysUseBorder flag either through Setup button or ~/.bitrc/Setup.opt.
Unless explicitly specified, a keyboard input means the specific key, not the ASCII code, thus keyboard command is case insensitive.
To activate a specific editing mode, click the mouse on the button labeled by the function.
The definition files must be named BIT_filters and BIT_convolve respectively and they are searched in ~/.bitrc or whatever the environment variable BITDIR points to, and concatenated with possible system wide definition found in /usr/local/lib/bit or HELPDIR with repeats removed.
All bindings must start with at (@) character and any line that does not is considered to be comments and is silently ignored. The format for external bindings is as follows:
@label; program ; options; format1; [format2;[format3;] ..]
where label is the string that will label the action button; and program is the name of the program to run (popen(3S) will be called to run it). options are command line options to the program. If the option field contains a question mark (?) alone, the option will be prompted before the program is actually executed. Format[0-4] specifies the formats the program is capable of reading, such as gif, ppm etc. Note that it is very important to give the formats in decreasing generality, that is, ppm; pgm; pbm; never pbm;pgm;ppm.
For example, the following are some sample (valid) bindings:
Shrink the current image by 20% @ Scale0.8; pnmscale -xscale 0.8 -yscale 0.8; ppm;pgm;pbm; Quantize an image @ Quantize256; ppmquant; -fs 256 ; ppm; pgm; @ Jquant256; djpeg; -GIF; jpeg @ Jquant; djpeg -colors ; ?; jpeg
The format name can be gotten by running bit with the -f flag. The format specifier is enclosed in parenthesis in the bit -f output.
@name; order; n1, n2, n3, ......;
where name is the button label and order is the rank of the convolution matrix, and n is an integer representing the matrix elements in column major, i.e.,n1 is the (0,0) element, n2 is the (0,1) element and so on. The matrix need not be normalized.
For example, you can define the following matrix to sharpen an image
@Sharpen; 3; 0,-1, 0, -1,10, -1, 0,-1, 0;
The above method changes the magnification factor uniformly in the X- and Y-directions. To adjust separately the magnification factors, use the following keyboard command:
X: Increase x magnification by decreasing region size. x: Decrease x magnification by increasing region size. Y: Increase x magnification by decreasing region size. y: Decrease x magnification by increasing region size.
For global magnification, see Section Configuration and -x|y flag.
In RGB mode, the three sliders representing the value of Red, Green and Blue intensities are shown and each slider is individually adjustable. The resulting color is shown on the OK button on the right-hand side of the panel. Some predefined named colors, mainly from /usr/lib/X11/rgb.txt, are available by pressing the PreDefCol button.
In colormap mode, a panel containing the current colormap with 64 entries per screen is shown and each individual entry is represented by a colored square inside the panel. Two large arrows on the sides of the panel can be used to scroll forward and backward through the color map. A particular color is selected by pressing the mouse on the square having the desired color. Current selection is marked by a cross and is also shown on the bottom-most button cabled Selected. The five small boxes on the bottom of the panel show, respectively, the index into the color map, red, blue and green intensities and luminosity.
In both RGB and colormap mode, leftmouse and rightmouse can be used to select any pixels on screen inside the main window as the current selected color by clicking on the pixel while holding down the CNTRL key. The selected pixels color will be shown in the appropriate boxes and/or buttons. The pixel picking mode is indicated by a cross cursor. This feature can also be used to get the intensity of a particular pixel by turning on the mouse position reporting from the Setup menu.
Upon entering crop mode, a rectangle with two small crosses on the opposite corners is shown. Clicking and dragging the cross move the corner of the rectangle and hence both the size and location of the crop region can be changed this way. For precise placement, the arrow keys and the keyboard key hjkl may be used (as in VI(1) ). The corner to which the key applies is the one closest to the mouse. This behavior can be overridden by the shiftkey, i.e., if leftshift is down, hjkl always applies to the upper-left corner of the rectangle regardless which corner is last touched by the mouse. Similarly rightshift key will force the hjkl key to apply to the upper-right corner. The number of pixels each hjkl moves can be changed by key [1-9]. If CONTROL key is down, the aforementioned command will move the rectangle without changing its size. The process can be repeated until a satisfactory crop region is found.
The size of the rubber band can also be symmetrically increased and decreased by the keyboard key xXyX.
The size and placement of the crop region are reported continuously on the FilePanel.
Pressing the menubutton is the main window will bring up a pop-up menu having the following entries
To enlarge an image without filling the outside region, turn off the CropFill flag through configuration file or Setup menu. This can be very useful in combination with cut & paste to import cut buffers or to concatenate images.
The rotation options are controlled by the rotation control panel, which consists of a counter to change the rotation angles (between -180 and +180 degrees measured counter-clockwise from the horizontal direction), and other buttons for convenience or other options. To change the rotation angle, simply click the mouse on either the single or double arrows in the counter. Leftarrow decrease the angle and right arrow increase the rotation angle. Rotation of multiple of 90 degrees or flipping about x- or y- axis are provided as shortcut buttons and can be set by clicking the mouse on appropriate buttons. After you have set the angle you can live with, click the mouse on the OK button.
For rotations other than multiple of 90 degrees, a fill color can be selected to fill the "rotated out" portions of the bounding rectangular region. To do so, click the mouse on FillColor button. In addition, for rotations other than multiple of 90 degrees, you can activate or deactivate subpixel sampling for anti-aliasing. Anti-aliasing always gives better results. The only situation where you do not want subpixel sampling is to keep the exact colors as the unrotated image. To activate or deactivate subpixel sampling, click the mouse on round subpixel button. If the subpixel is turned off, the rotated image will have the same type as the unrotated image.
For online help, click the mouse anywhere inside the rotating control panel where there is no other objects.
To change the size of the cut region, keyboard key xXyY can be used to decrease/increase the width and height of the cut region, key [1-9] controls the step size for each key press. The size can also be changed by clicking the menubutton, which will bring up a static rubber band with two crosses on it. You can change the size and location by dragging these two crosses. Keyboard key hjkl and the arrow keys can also be used to manipulate the rubber band. To resume cut & paste, click away from the crosses.
The cut buffer so generated (by leftmouse) may come in one of two ways. It may come as a result of a direct screen read or it may come as an internal memory copy depending on the settings of the ReadScr/Internal button. When ReadScr is active, everything that falls within the cut region will be read into the cut buffer while when Internal is active, the cut buffer always comes from the image in core. Screen reads may be useful in certain situations but in general it should be avoided on machines with less than 24 bitplanes.
A cut buffer may also be obtained by importing an external image in any of bit supported formats. To do so, click the Import button. The imported image behaves exactly like a normal cut buffer except that it can not be named, thus a new cut or new import overwrites the current imported image.
To save a cut buffer for later pasting, click Save button. The saved buffer will be available during the entire session of bit.
There are two different kinds of pasting, i.e., Overwrite and mask. In Overwrite mode, the cut buffer replaces completely the targeted image area, both on screen and in core while in mask mode, a mask operation is performed before replacing the pixels in the region. The mask is defined as NewPix = (PixInCutBuffer != MagicPix ) ? PixInCutBuffer: OriginalPix for every pixel in the region (current MagicPix is 0). An obvious application of this feature is to import external images as logos or signatures and paste it into the current image.
Bit further has a Preview mode in Cut&Paste where all pasted buffers only alter the pixels in the framebuffer and leave alone the image in core. To alter in the framebuffer as well as altering the image in core, toggle on the Commit flag.
Note that in Commit mode or Preview with Masking turned on, both the cut and paste regions are not allowed outside the image area, thus if an image larger than the current image is imported in Commit or Preview with masking turned on, a lock up of the rubber band might occur, therefore, it is generally not a good idea to import an image larger than the current image, do the reverse instead.
For a simple cut&paste, see Paint function.
In certain situations, it might be desirable to make the image having a particular size without changing the aspect ratio. To achieve this, toggle on the Exact button, and the scale factors become independent, adjust each until you've got the desired size, bit will scale the image to the requested size, using the smaller of the two factors, and filling the empty region with a fill color, which can be set by clicking on the FillColor button.
To start scaling, click the mouse on OK button. To exit scale mode, click the mouse on Done button.
To load the image to be merged, click on the Image2M button.
There are total of 12 alignments between two images (3 on each side, e.g., if we want to place the new new image on the left of the current image, within this constraint, there are center, top and bottom. If the new image has the same size as the current image, the three placements degenerate into a single location) and each is shown as a small arrow. The meaning of each arrow becomes clear if you consider the manual button as the current image, and all other buttons are the possible new image locations. The counter below the alignment button controls the separation between the two images, thus a negative separation merges two images. In performing merging, there are two ways to handle the overlapping part, the default is for the new image to overwrite the old one, i.e., new image on "top". To change the default, click on the Top/Bottom button.
In addition to overwrite, other operations are possible. Current implemented operations are defined as follows (assuming A is a pixel in the current displayed image and B is the corresponding pixel in the image to be merged):
Name | Definition |
OverWrite | B |
Mask | B ? B:A |
Add | Min(B+A, 255) |
Sub | Max(B-A, 0) |
Diff | Abs(B-A) |
XOR | B^A |
Switch B&A if the top/bottom setting is bottom.
The placement buttons and the separation counter provide adequate alignment between two images in most cases, nonetheless, a manual button is provided in case you want to control precisely where the image should be placed. To activate manual placement, click on the manual button. Then you can use the arrow keys, hjkl[1-9] to move the the rubber band, or you can use the mouse to move the rubber band.
Upon a satisfactory location is found, click on the Merge button to initiating merging/concatenation, and a new image is formed with all empty regions filled with the fill color, changeable by clicking on the FillCol button.
After merging/concatenating, although the image displayed and in core have the merged size, further alignment requests are still against the pre-merged image, not the merged one. To change this, click on the Update button and subsequent alignment requests will be against the current image. Depending on the situation and relative image sizes involved, Update button may prove to be very useful, e.g., to concatenate four identically sized images together, the only way to do it without manual placement is to concatenate the first two, and update the alignment reference size, and concatenate the rest without update.
To exit merging mode, click on the Done button.
Upon entering PixTran mode, shown is a control panel with three XY graphs representing the RGB transformation function with the horizontal axis being the input pixel value and the vertical axis being the output pixel value. The initial transformation is an identity transformation, i.e., F(I) = I. To change the transformation function, click the mouse on the control points (shown as little squares) on the graphs and the cursor will change to a small cross. Keep mouse pressed and drag the control points to change the transformation function. The number of control points can be changed by the counter labeled ControlPoints.
Initial size is the entire image, as indicated by rubber band. To adjust the editing size, drag the small crosses on the rubber band or use keyboard key hjkl (or arrow keys) and xXyY.
On top-right of the control panel, three rounded buttons labeled Red, Green, and Blue are shown. Immediately below, there is a large button labeled RGB. These four buttons control to which component, or simultaneously all three components, the current transformation applies to. These four settings are of course mutually exclusive and setting one will unset the other three.
In principle, the interaction mentioned above with the transformation function is capable of any transformations imaginable, but in practice, it is not always easy to set the transformation to some known functions, nor to change all the control points by some given amount, such as gamma corrections and brightness adjustment. To solve these problems, a math expression parser and several common functions are provided as shortcuts. The parser is rather lenient in the syntax and error, but demands you name the variable x. Photo inversion, step functions, gamma correction are among the shortcuts. In addition, the intensity can be shifted either downward or upward. For large number of control points with upward shifts, the final transformation can be very interesting because of ignored overflows. The overall brightness of the image can be adjusted in two ways: the brightness can be increased by an absolute amount (F(I) = I + Delta or by a percentage (F(I) = (1 + Delta * I. The selection can be changed by clicking the mouse on text Brightness.
Once a satisfactory transformation is found, click the mouse on the button labeled Apply. The current image will be transformed according to the transformation and the settings of which component or components the transformation applies to. The transformed image will then replace the original image as the current image. To undo the transformation, press the mouse on the button labeled Undo. Note, however, unlike in crop, only one undo is supported, that is, if you did two transformations in succession, only the last transformation can be undone.
To exit PixTran mode, press mouse on the Done button.
By using combination of the 1-to-1 transformations, some very pleasing effects can be achieved. For example, to simulate the effect of looking the image through a bluish glass, shift red and green intensity down by two bits, and shift the blue intensity down by one or zero bit, do the transformation. The result is very nice. Similar tricks can be applied for reddish glass or greenish glass. Be creative, when you find something interesting, please let me know. I might add a shortcut button for it.
Note when I said the interaction mentioned above is capable of any transformation imaginable, I lied. It can't simply because the transformation is three one-dimensional graphs instead of the correct one three-dimensional one. For this reason, two additional functions are supplied to swap two arbitrary pixels values (e.g., change black to white and white to black) or simply replace all pixels with a particular color with another color (e.g., change all dark gray pixels to bright red).
Initial text is the current filename and can be changed by typing into the control panel field labeled Text. The new text is shown as soon as you type, both inside the field and in the main window. To move the location of the text string rendered, click the mouse inside the main window, the string will move to the location of the mouse. You can also drag the text string by keeping the mouse button down. For precise placement, use the arrow keys or hjkl.
Sometimes, it is desirable to render the text onto a fixed (uniform) background. To this end, turn on the Bkgrnd button, and a uniform background will appear beneath the text. The background color can be changed by clicking the mouse on the BkColor button. Note that if the background is not enabled, neither is the background color. Similarly, if you like to have a bounding frame around the text, turn on the frame feature by clicking the mouse the Frame button. In conjunction with PixTran's region feature, a special background can be created that gives the image as appears through semi-transparent glass.
Some special effects are available, currently, Shadow, engraved and emboss are implemented. For any of these to look nice, you need to play with the text and background color a bit. In general, for shadow to look nice, a strong text and background are needed and for engraved to look nice, a mild text and background should be used and text should be stronger than the background, and further, the background and text should be close. The same is true for emboss effects.
Note there are two modes of operation, one is the immediate and the other is the deferred method. In immediate mode, text are rendered into the raster while in deferred mode, text is saved separately from raster and may be output separately to get better looking hardcopies. The mode of operation can be toggled by pressing on the appropriate buttons. If text are saved in deferred mode and later on, you decide to render the text into the raster, you can do a crop.
If the purpose of adding text is to get an annotated hardcopy, justification is extremely important. Keep in mind that screen has a much lower resolution than a printer. The same string displayed left justified and center justified (with right shift of half of the string length) might look the same on the screen, but could be very different on hardcopy. Therefore, always use proper justification if hardcopy is desired. To preview what the test might look like on hardcopies, choose the PrinterFont by toggling the ScreenFont. This will switch the fonts used to printer matched ones which give better indication how long the text would be or how different lines of text would align on paper.
If special symbols are desired, you can input them just like in TeX(1), where special symbols are surrounded by dollar signs ($) to indicate font switching. Unlike in TeX, superscript and subscript do not work. Minor size changes on the same line can be achieved by using command \tiny \small, \normal, \large and \huge. For symbols not defined by bit, you can still get them by inputting their character code directly in octal preceded by backslash (\), provided you know the encoding scheme of font you are using. For text via PostScript, ISOLatin1Encoding is the default (unless printer is Level 1 only and in that case standard PS encoding is used).
Once everything, including the location, is satisfactory click the mouse on the OK button to place the the current text into the image (not necessarily into the raster, depending on immediate/deferred settings). To exit text mode, click the mouse on the Done button.
Note: in immediate mode, strings that are outside the image can not be rendered. To render a string outside the image, use deferred mode and do a crop following the text mode and fill the empty region with whatever color you might choose.
Sometimes, the underline image may have intrinsic units associated with it, and working in that units might be easier, such as a map with one pixel-pixel distance equal to 0.83 km (kilometers). To switch to this unit, toggle on the User coordinate button and enter the conversion between pixels and this unit, defined as the ratio between 1 unit in the pixel coordinate system and the value it represents in the new unit system, and in this example, you would enter 1.20482 (which is 1/0.83), meaning 1.20482 km is represented by 1 pixel-pixel distance. Once in user coordinates, all distances and sizes reported and requested should be in the new units, for example, you can request to draw a circle of radius 120 km etc. The origin of the coordinate can be changed by pressing the mouse on the SetOrigin button, and the current location of the mark will be the new zero of the coordinate system.
To move the location of the sgfs, you can either click inside the main window where you want the sgf to be, or you can input the coordinates of the locations you desire, and the SGF will move to the new location. The input feature is extremely useful if user coordinate system is in force.
For speed reasons, only the x- and y- components of the current location is reported in the control panel by default. To get the distance from the origin, turn on the Dreport option.
To place a mark, press the mouse on the OK button, current object together with all of its attributes, such as color, location, etc, are saved. To exit mark mode, press done button.
The marks so "rendered" may or may not be rendered into the image depending on the settings of the Immediate/Deferred mode. In Immediate mode, sgf is rendered into the raster and bit has no record of it. In deferred mode, full vector information of the sgf is retained and the sgf is drawn on top of the image, but not rendered into the raster. The deferred mode is useful for generating hardcopies via PostScript where the vector info is used to scan convert the sgf on a printer which typically has a better resolution (>300dpi) than the computer screen (<100dpi). If sgfs are rendered in deferred mode, and later on there is a need to render them into the raster, do a crop.
Note in immediate mode, all sgfs that are outside the image are clipped. To render a mark outside the image, enlarge the image first via crop.
For convenience, the following keyboard keys can be used: xXyY have the usual meaning, that is xy decreases the width and height respectively and XY increases the the width and height. Arrow keys (or hjkl) can be used for precise placement of the sgfs. rR rotates the sgf in discrete steps which can be set by [1-9].
If the hardware is capable of drawing anti-aliased lines, bit will try to draw all lines anti-aliased. However, for colormap images or lines with width that is not 1, anti-aliasing will not be performed.
To exit colormap editing, click the mouse on the Done button on the colormap panel.
Upon entering this mode, a copy of the current image is made and all changes that occur are made to this copy until return and at that point, the changes becomes permanent. To force the changes to be permanent before return, click on the Save button. Click on Undo to undo all changes since last Save.
By default, the smooth is performed on the entire image. To smooth a particular region of the image, drag the small crosses on the rubber band. See Crop for more details on the interactive sizing of the rubber band.
To preserve edges, a threshold may be used according to the following definition:
If(Abs(SmoothedPixel- OldPixel) >= threshold) NewPixel = SmoothedPixel else NewPixel = OldPixel
Different thresholds for R,G,B can be used and are set by pressing on the counters.
To start smooth, click on the Smooth button. To finish up, click on the Done button.
The graphs are static for efficiency reasons and therefore, even when image has been changed, the histogram is not updated automatically. To show the histogram of current (changed) image, clicking the mouse on the Histogram button again.
Click on the title bar brings up the pop-up menu, whose entries include re-scaling, change of plotting styles etc. Select Done to finish.
To select the pixel to edit, click leftmouse on the pixel in the PixEdit window. Its value can be changed in the same way as in Select a color, i.e., by dragging the slider and/or changing the colormap entry.
To set a pixel to the current color (as shown in the mixer/colormap), click leftmouse on the pixel while holding down the ALT key or. by clicking middlemouse. Dragging will set all pixels along the path.
To change all pixels that have a particular value to a different one, edit one first, then use the pop-up entry Repeat. For example, if one wants to change all bluish pixels to red, select one bluish pixel and change it to red, then do a Repeat thru popup (To changing/swap pixels for the entire image or a large region of it, See PixTran function).
The pop-up menu has the following entries Help, MarkCol, GridCol, Repeat, Cancel and Done. MarkColand GridCol cycles the the colors of the pixel mark and the grid; Repeat Do the last editing on all pixels in the PixEdit window. Cancel discard all changes and return. and Done saves all changes and return.
The following is not editing functions per se, but its interaction is complex enough to warrant an explanation:
To view an image, double click on the filename icon. If the image is successfully loaded, its thumbnail image will be made and used to replace the original generic icon. Double click on a directory will spawn another image browser. Total of 7 directories can be simultaneously displayed.
To generate thumbnail images for all visible filenames in the browser, click on the Update button. If a thumbnail has a date that is earlier than that of the image, the thumbnail is re-generated.
Directory entries are cached and to force a re-read after addition or deletion, click on the ReScan button. Note however, ReScan will also do an update. In addition, thumbnails whose original images no long exist will be deleted.
To move forward and backward within the browser, the arrow buttons and the slider can be used. For efficiency reasons, slider change is acted upon only on its release, that is, program does nothing while you are changing the slider. Arrows move one-screenful of files at a time, and thumbnails, if they exist, are loaded as you go. This could be slow if many thumbnails exist, to move back and forth quickly without loading any thumbnail images, keep CNTL key down while pressing on the arrow buttons.
To cleanup all thumbnail images, click on DelAll button. To cleanup manually, remove ./.btn directory and all entries in it.
There is no built-in buttons to manipulate (for example, deleting the original image) the original images. A mechanism via run time definition is provided to achieve this operation. Once a definition is registered, it operates on all marked files. To define an external binding, click menubutton on the button next to the Close button; to execute the binding, click leftmouse on the button.
The definition is consisted of two strings, and two booleans. The two strings are the button label and a shell command respectively and two booleans are Confirmation and MultiArgs. MultiArgs indicates if the shell command accepts multiple arguments and if Confirmation is set, bit will pause for a mouse click before the actual execution of the binding. The shell command takes the form
cmd [options] [?] [options]
where ? will be replaced by the filenames marked. For example,
mv ? /usr/people/good_dir
Upon entering paint function, a panel containing all paint function icons are shown. Click on the icon to activate a specific function.
On the lower-right corner of the panel, current line width and fill pattern are shown. Two special entries are available to facilitate the uniform operation of outlining and fill. By default, outlines are drawn, possibly with a different color, around the filled area. To turn outlining off, select None (or zero) for line width. Similarly, all closed area are filled unless the fill pattern is None.
To display frame by frame (stepping), click on the NextFrame button.
The default magnification factor for MPEG movie is 2x2. To change it, click on the left-most box above the FrameControl box. Use menubutton for random selection.
To introduce a delay between two frames, click on the box next to the magnification box, click leftmouse for next entry, middle mouse for previous entry and rightmouse for random access.
To convert the currently displayed frame to other format, click on the Convert button. The destination format is selected by clicking the box on top of the Convert button. To convert all frames, starting from current frame, click on ConvertAll button.
All other buttons have the obvious meanings.
Also see sgimpeg(1L) for a simpler, stand-alone MPEG player.
Note: seeking of any kind does not work. Clicking on PrevFrame is the same as NextFrame.
The following functions are not directly supported by bit program but can be done indirectly:
JPEG support is based on the Independent JPEG Group's library Version 4.
The Graphics Interchange Format (c) is the Copyright property of CompuServ Incorporated. GIF(sm) is a Service Mark property of CompuServ Incorporated.
The FORMS library is developed by Mark Overmars.
MPEG support is derived from the Berkeley source.
Unable to load two images simultaneously due to loading module's re-entrant problems.
Can't run bit remotely, at least not reliably.